package com.xyh.jdkDemo;

/**
 * @version v1.0
 * @类描述： 主要是测试intern() 方法测试类  解释 intern 方法的作用就是想堆空间中的字符串常量池进行增加操作如果没有字符串常量
 * 就增加 如果有返回地址
 * @项目名称：
 * @包名： com.xyh.jdkDemo
 * @类名称：StringTableTest
 * @创建人：YIHANG.XU
 * @创建时间：2020/6/148:34 下午
 * @修改人：YIHANG.XU
 * @修改时间：2020/6/148:34 下午
 * @修改备注： 解释网址 https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html
 * @Copyright
 */
public class StringTableTest {
    public static void main(String[] args) {
        //new String 会创建两个对象一个是在常量池中 一个是在堆空间的对象
       /* String s1 = new String("aaa");
        //直接在常量池中创建
        String s2 = "aaa";
        s1.intern();//flase 因为是对比的是常量池中的字符串地址和堆中的对象
        // s1 = s1.intern(); //true 现在对比的是常量池中的地址
        System.out.println(s1 == s2);*/

        // 下面这种写法不会在常量池中创建对象 只会在堆空间中创建 当 s3.intern()方法在s4 的下面的时候就会出现false 在上面时
        // 就是true
        String s3 = new String("111") + new String("111");

        s3.intern();
        String s4 = "111111";

        System.out.println(s3 == s4);


    }
}
